<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui"
	xmlns:fn="http://java.sun.com/jsp/jstl/functions"
	template="./templates/main.xhtml">

	<ui:define name="title">#{msg['title.consultaEmision']}</ui:define>

	<ui:define name="content">

		<f:metadata>
			<f:event type="preRenderView"
				listener="#{emisionFacturasBean.loadCombos}" />
		</f:metadata>

		<h:form prependId="false">

			<p:panel header="Filtros">

				<h:panelGrid id="datosConsulta" columns="4" cellpadding="4"
					border="0" width="100%" styleClass="ui-widget-content">

					<h:outputLabel value="Empleado:" />
					<h:selectManyListbox style="height:120px;"
						value="#{emisionFacturasBean.criteria.idsEmpleado}">
						<p:ajax update="cbLineas"
							listener="#{emisionFacturasBean.updateLineasBySelection}" />
						<f:selectItems value="#{emisionFacturasBean.empleados}"
							itemValue="#{e.id}" itemLabel="#{e.presentacion}" var="e" />
					</h:selectManyListbox>

					<h:outputLabel value="#{msg['label.tipoLinea']}:" />
					<h:selectManyListbox style="height:50px;" size="2"
						value="#{emisionFacturasBean.criteria.tiposLinea}">
						<p:ajax update="cbLineas"
							listener="#{emisionFacturasBean.updateLineasBySelection}" />
						<f:selectItems value="#{emisionFacturasBean.tiposLinea}"
							itemValue="#{n}" itemLabel="#{n.descripcion}" var="n" />
					</h:selectManyListbox>

					<h:outputLabel value="Factura:" />
					<h:selectManyListbox style="height:120px;"
						value="#{emisionFacturasBean.criteria.idsFactura}">
						<f:selectItems value="#{emisionFacturasBean.facturas}"
							itemValue="#{f.id}" itemLabel="#{f.codigo}" var="f" />
					</h:selectManyListbox>

					<h:outputLabel value="#{msg['label.lineaTelefono']}:" />
					<h:selectManyListbox style="height:120px;" id="cbLineas"
						value="#{emisionFacturasBean.criteria.idsLinea}">
						<f:selectItems value="#{emisionFacturasBean.lineasTelefonicas}"
							itemValue="#{l.id}" itemLabel="#{l.numero} (#{l.extension})"
							var="l" />
					</h:selectManyListbox>

					<h:outputLabel value="Fecha inicial:" />
					<h:selectOneMenu converter="dateConverter"
						value="#{emisionFacturasBean.criteria.facturacionDesde}">
						<f:selectItems value="#{emisionFacturasBean.fechasDesde}" />
					</h:selectOneMenu>

					<h:outputLabel value="Fecha final:" />
					<h:selectOneMenu converter="dateConverter"
						value="#{emisionFacturasBean.criteria.facturacionHasta}">
						<f:selectItems value="#{emisionFacturasBean.fechasHasta}" />
					</h:selectOneMenu>

				</h:panelGrid>

			</p:panel>

			<p:spacer height="15" />

			<p:dataTable id="lineasFactura"
				value="#{emisionFacturasBean.lineasFacturaSalida}"
				var="lineaFacturaSalida" emptyMessage="Sin resultados">

				<p:column
					sortBy="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.titular.presentacion}">
					<f:facet name="header">
						<h:outputText value="Titular" />
					</f:facet>
					<h:outputText
						value="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.titular.presentacion}" />
				</p:column>

				<p:column sortBy="#{lineaFacturaSalida.lineaFactura.factura.codigo}"
					style="text-align:center">
					<f:facet name="header">
						<h:outputText value="Factura" />
					</f:facet>
					<h:outputText
						value="#{lineaFacturaSalida.lineaFactura.factura.codigo}" />
				</p:column>

				<p:column style="text-align:center"
					sortBy="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.numero}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.numeroLinea']}" />
					</f:facet>
					<h:outputText
						value="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.numero}" />
				</p:column>

				<p:column style="text-align:center"
					sortBy="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.extension}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.extension']}" />
					</f:facet>
					<h:outputText
						value="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.extension}" />
				</p:column>

				<p:column style="text-align:center"
					sortBy="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.tipo.descripcion}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.tipoLinea']}" />
					</f:facet>
					<h:outputText
						value="#{lineaFacturaSalida.lineaFactura.lineaTelefonica.tipo.descripcion}" />
				</p:column>

				<p:column style="text-align:center"
					sortBy="#{lineaFacturaSalida.lineaFactura.importeConsumido}">
					<f:facet name="header">
						<h:outputText value="Importe" />
					</f:facet>
					<h:outputText
						value="#{lineaFacturaSalida.lineaFactura.importeConsumido}"
						converter="javax.faces.Double" />
				</p:column>

				<p:column sortBy="#{lineaFacturaSalida.descuento}"
					style="text-align:center">
					<f:facet name="header">
						<h:outputText value="Descuento" />
					</f:facet>
					<h:outputText value="#{lineaFacturaSalida.descuento}"
						converter="javax.faces.Double" />
				</p:column>

				<p:column sortBy="#{lineaFacturaSalida.importeIva}"
					style="text-align:center">
					<f:facet name="header">
						<h:outputText value="IVA" />
					</f:facet>
					<h:outputText value="#{lineaFacturaSalida.importeIva}" />
				</p:column>

				<p:column sortBy="#{lineaFacturaSalida.total}"
					style="text-align:center">
					<f:facet name="header">
						<h:outputText value="Total" />
					</f:facet>
					<h:outputText value="#{lineaFacturaSalida.total}"
						converter="javax.faces.Double" />
				</p:column>


				<p:columnGroup type="footer">

					<p:row>

						<p:column colspan="5" footerText="Totales:"
							style="text-align:right" />

						<p:column
							footerText="#{emisionFacturasBean.total.totalConsumidoFormateado}"
							style="text-align:left" />

						<p:column
							footerText="#{emisionFacturasBean.total.totalDescuentoFormateado}"
							style="text-align:left" />

						<p:column
							footerText="#{emisionFacturasBean.total.totalIvaFormateado}"
							style="text-align:left" />

						<p:column
							footerText="#{emisionFacturasBean.total.totalFacturadoFormateado}"
							style="text-align:left" />

					</p:row>

				</p:columnGroup>

			</p:dataTable>

			<p:spacer height="15" />

			<h:panelGrid columns="3">

				<p:commandButton
					update="lineasFactura growl btnFactura btnJustificante"
					value="Calcular factura" image="buscar"
					actionListener="#{emisionFacturasBean.buscar}" />

				<p:commandButton value="Emitir justificante" image="justificante"
					id="btnJustificante" ajax="false"
					disabled="#{ empty emisionFacturasBean.lineasFacturaSalida }"
					actionListener="#{emisionFacturasBean.generarJustificante}" />

				<p:commandButton value="Emitir factura" image="listado"
					id="btnFactura"
					disabled="#{ empty emisionFacturasBean.lineasFacturaSalida }"
					onclick="dlgDatosGeneracionFactura.show()" />

			</h:panelGrid>

		</h:form>

		<h:form prependId="false">

			<p:dialog header="#{msg['label.datosGeneracionFacturas']}"
				width="600" height="185" widgetVar="dlgDatosGeneracionFactura"
				resizable="true" showEffect="clip" hideEffect="clip" modal="true">

				<h:panelGrid columns="2" id="datosGeneracionFactura" cellpadding="4"
					styleClass="ui-widget-content" columnClasses="label, value">

					<h:outputText id="Secuencia"
						value="Valor inicial para la numeración de las factudas:" />
					<h:inputText value="#{emisionFacturasBean.inicioSecuenciaFacturas}"
						maxlength="5" />

					<h:outputText value="#{msg['label.codigoPrecedidoPor']}:" />
					<h:outputText
						value="#{parametrosBean.current.prefijoCodigoFactura}" />

				</h:panelGrid>

				<br />

				<p:commandButton image="listado" value="Generar facturas"
					onclick="dlgDatosGeneracionFactura.hide()" ajax="false"
					update="growl"
					actionListener="#{emisionFacturasBean.generarFactura}" />

				<p:commandButton image="volver" value="#{msg['button.volver']}"
					onclick="dlgDatosGeneracionFactura.hide()" />


			</p:dialog>

		</h:form>

	</ui:define>

</ui:composition>